home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / intrvews / xgrab.lha / xgrab / ui / OGC / gcmem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-03-06  |  802 b   |  57 lines

  1. /**
  2.    GRAB Graph Layout and Browser System
  3.  
  4.    Copyright (c) 1989, Tera Computer Company
  5.  **/
  6.  
  7. extern char * gc_malloc(int) ;
  8. extern void gc_free(char *) ;
  9.  
  10. typedef void (*vfp)();
  11.  
  12. extern vfp __new_handler;
  13.  
  14. char *
  15. __builtin_new (long sz)
  16. {
  17.   char *p;
  18.  
  19.   p = (char *)gc_malloc (sz);
  20.   if (p == 0)
  21.     (*__new_handler) ();
  22.   return p;
  23. }
  24.  
  25.  
  26. void
  27. __builtin_delete (char * ptr)
  28. {
  29. #ifdef DO_FREES
  30.   if (ptr)
  31.     gc_free (ptr);
  32. #endif
  33. }
  34.  
  35. void
  36. __builtin_vec_delete (char * ptr, int maxindex, int size,
  37.               void (*dtor)(),
  38.               int auto_delete_vec, int auto_delete)
  39. {
  40.   int i, nelts = maxindex + 1;
  41.   char *p = ptr;
  42.  
  43.   ptr += nelts * size;
  44.  
  45.   for (i = 0; i < nelts; i++)
  46.     {
  47.       ptr -= size;
  48.       (*dtor) (ptr, auto_delete);
  49.     }
  50.  
  51. #ifdef DO_FREES
  52.   if (auto_delete_vec)
  53.     gc_free (p);
  54. #endif
  55. }
  56.  
  57.